import { defineWrappedResponseHandler } from "#server/utils/handler"; import { R } from "#server/utils/response"; import { resolveAgentIdentity } from "#server/service/agent/identity"; import { getSessionByIdAndUser, updateSession } from "#server/service/agent/session"; import { getAgentBySlug } from "#server/service/agent/agent"; export default defineWrappedResponseHandler(async (event) => { const agentSlug = getRouterParam(event, "agentSlug"); const id = getRouterParam(event, "id"); if (!agentSlug || !id) { return R.error("参数无效", null); } const agent = await getAgentBySlug(agentSlug); if (!agent) { return R.error("agent 不存在", null); } const identity = await resolveAgentIdentity(event); const session = await getSessionByIdAndUser(id, identity.userId, identity.tempToken); if (!session) { return R.error("会话不存在", null); } if (session.agentId !== agent.id) { return R.error("会话不属于该 agent", null); } const body = await readBody(event); const { modelId, enableThinking, enableTools, systemPrompt } = body as { modelId?: number; enableThinking?: number; enableTools?: number; systemPrompt?: string | null; }; const updates: { modelId?: number | null; enableThinking?: number | null; enableTools?: number | null; systemPrompt?: string | null; } = {}; if (modelId !== undefined) updates.modelId = modelId; if (enableThinking !== undefined) updates.enableThinking = enableThinking ? 1 : 0; if (enableTools !== undefined) updates.enableTools = enableTools ? 1 : 0; if (systemPrompt !== undefined) { if (systemPrompt !== null && typeof systemPrompt === "string" && systemPrompt.length > 5000) { return R.error("系统提示词不能超过5000字符", null); } updates.systemPrompt = systemPrompt; } if (Object.keys(updates).length === 0) { return R.error("无更新内容", null); } await updateSession(id, updates); return R.success({ id, ...updates }); });